//
//  MSCycleView.m
//  CycleScrollViewDemo
//
//  Created by lanou3g on 16/4/19.
//  Copyright © 2016年 myFree. All rights reserved.
//

#import "MSCycleView.h"

@interface MSCycleView()<UIScrollViewDelegate>
///scrollView
@property (nonatomic, strong) UIScrollView *imgScrollView;
///pageController
@property (nonatomic, strong) UIPageControl *imgPageController;
///ImgViewArray
@property (nonatomic, strong) NSMutableArray *imgViewArray;
///存放图片的数组
@property (nonatomic, strong) NSMutableArray *imgArray;
///当前展示图片的下标
@property (nonatomic, assign) NSInteger index;
///定时器
@property (nonatomic, strong) NSTimer *imgTimer;
///点击回调Block
@property (nonatomic, copy) void(^tapBlock)(NSInteger index);
///时间间隔
@property (nonatomic, assign) NSTimeInterval interval;
@end

@implementation MSCycleView

///初始化
-(instancetype)initWithFrame:(CGRect)frame interVal:(NSTimeInterval)interval {
    self = [super initWithFrame:frame];
    if (self) {
        self.imgViewArray = [NSMutableArray new];
        self.imgArray     = [NSMutableArray new];
        
        self.imgScrollView = [[UIScrollView alloc]initWithFrame:self.bounds];
        self.imgScrollView.bounces = NO;
        self.imgScrollView.contentSize = CGSizeMake(frame.size.width * 6, frame.size.height);
        [self addSubview:self.imgScrollView];
        for (int i = 0; i < 6; i ++) {
            UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(frame.size.width * i , 0, frame.size.width, frame.size.height)];
            //添加到父视图 数组
            [self.imgScrollView addSubview:imgView];
            [self.imgViewArray addObject:imgView];
        }
         
        ///初始化Timer
        if (interval <= 0) {
            self.imgTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
        }else {
            self.imgTimer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
        }
    }
    return self;
}
///图片滚动方法
- (void)timerAction {
    [self.imgScrollView setContentOffset:CGPointMake(self.imgScrollView.frame.size.width *2, 0) animated:YES];
    self.index = (self.index +1) % self.imgNameArray.count;
}
//滚动动画结束
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    ///回位
    
    [self.imgScrollView setContentOffset:CGPointMake(scrollView.frame.size.width, 0) animated:NO];
    [self layoutImages];
}


///图片名数组
-(void)setImgNameArray:(NSMutableArray *)imgNameArray {
    if (_imgNameArray !=imgNameArray) {
        _imgNameArray = imgNameArray;
        //设置pageController
        [self.imgPageController removeFromSuperview];
        self.imgPageController = [[UIPageControl alloc]initWithFrame:CGRectMake(0, self.frame.size.height - 40, self.frame.size.width, 40)];
        [self addSubview:self.imgPageController];
        ///属性
        self.imgPageController.currentPage = 0;
        self.imgPageController.enabled = NO;
//        self.imgPageController.backgroundColor = [UIColor redColor];
        self.imgPageController.numberOfPages = _imgNameArray.count;
        self.imgScrollView.delegate = self;
        self.imgScrollView.pagingEnabled = YES;
        self.imgScrollView.showsHorizontalScrollIndicator = NO;
        for (int i = 0; i < imgNameArray.count; i++) {
            UIImage *img = [UIImage imageNamed:imgNameArray[i]];
            [self.imgArray addObject:img ];
            if (i < 6) {
                [self.imgViewArray[i] setImage:img];
                
            }
        }
        //设置当前偏移量
        [self.imgScrollView setContentOffset:CGPointMake(self.frame.size.width, 0) animated:NO];
        [self layoutImages];
        ///点击手势
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapCycleViewAction:)];
        [(UIImageView *)self.imgViewArray[1] addGestureRecognizer:tap];
    [(UIImageView *)self.imgViewArray[1] setUserInteractionEnabled:YES];
        
    }
    
}
-(void) tapCycleViewAction:(UITapGestureRecognizer *)tap {
    if (self.tapBlock) {
        self.tapBlock(self.index);
    }
    
}
#pragma mark - UIScrollViewDelegate
///开始拖动
static CGFloat x = 0;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    x = scrollView.contentOffset.x;
    [self.imgTimer setFireDate:[NSDate distantFuture]];
}
///滑动结束
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (x > scrollView.contentOffset.x) {
        [self panToLeft:NO Index:self.index];
    }else if(x < scrollView.contentOffset.x) {
        [self panToLeft:YES Index:self.index];
    }
    [self.imgTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:2]];
    
    
}
///向左滑动 向右滑动结束切换
-(void)panToLeft:(BOOL)Left Index:(NSInteger)index {
    if (!Left) {
        self.index = (index - 1 + self.imgNameArray.count) % self.imgNameArray.count;
    }else {
        self.index = (index +1) % self.imgNameArray.count;
    }
    //切换图片
    [self layoutImages];
    //回位操作
    [self.imgScrollView setContentOffset:CGPointMake(self.frame.size.width, 0) animated:NO];
    
}

///切换图片
-(void)layoutImages {
    for (int i = 0; i < 6; i++) {
        
        [ self.imgViewArray[i] setImage:self.imgArray[(self.index - 1  + i + self.imgNameArray.count) % self.imgNameArray.count]];
    }
}
///index的setter方法
-(void)setIndex:(NSInteger)index {
    if (_index != index) {
        _index =index;
        self.imgPageController.currentPage = index;
    }
}
///block回调
- (void)addTapBlock:(void(^)(NSInteger index))block {
    self.tapBlock =block;
}
@end
